package top.iiiimonster.module.controller.demo;

import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController
//RestController注解，添加在类上，是 @Controller 和 @ResponseBody 的组合注解，
// 直接使用接口方法的返回结果，经过 JSON/XML 等序列化方式，最终返回。
// 也就是说，无需使用 InternalResourceViewResolver 解析视图，
// 返回 HTML 结果。
@RequestMapping("/demo/test")
//RequestMapping 注解，添加在类或方法上，标记该类/方法对应接口的配置信息。
//path 属性：接口路径。[] 数组，可以填写多个接口路径。
//values 属性：和 path 属性相同，是它的别名。
@Validated
@Slf4j
public class DemoTestController {

    @GetMapping("a/{age}")
    public String getA(@PathVariable
                       // demo/test/a/这是方法a
                       //通过 @PathVariable
                       // 可以将 URL 中占位符参数绑定到控制器处理方法的入参中
                       // :URL 中的 {xxx} 占位符可以通过
                       String age
    ) {
        return age;
    }

    @RequestMapping(value = "b", method = RequestMethod.GET)
    //RequestMapping method 属性：请求方法 RequestMethod ，
    // 可以填写 GET、POST、POST、DELETE 等等。
    // [] 数组，可以填写多个请求方法。
    // 如果为空，表示匹配所有请求方法。
    public String getB(@RequestParam()
                       // /demo/test/b?age=这是方法b
                       //通过@RequestParam可以通过URL拼接的方式访问数据
                       String age) {
        return age;
    }

    @GetMapping(value = "c/{a}")
    public String getC(@RequestParam()
                       String age,
                       @PathVariable String a) {
        ///demo/test/c/a?age=只是age

        log.info("这是方法c");
        return "age=" + age + "\t ,a=" + a;
        //age=只是age ,a=a
    }


}
